package org.ala.tcp_feign_server.handler.heart;

import org.ala.tcp_feign_common.config.AttrbuteKeyNamespace;
import org.ala.tcp_feign_common.enums.TcpFeignMessageTypeEnums;
import org.ala.tcp_feign_common.handler.IByteMessageAction;
import org.ala.tcp_feign_common.msg.heart.HeartACKByteMessage;
import org.ala.tcp_feign_common.msg.heart.HeartByteMessage;

import io.netty.channel.ChannelHandlerContext;
import io.netty.util.AttributeKey;


/**
 * 心跳消息
 * <p>	客户端 -> 服务端
 *
 * @author 骆毅(ala)
 * @date 2024年4月19日
 */
public class HeartByteMessageAction implements IByteMessageAction<HeartByteMessage> {

	@Override
	public TcpFeignMessageTypeEnums type() {
		return TcpFeignMessageTypeEnums.HEART;
	}

	@Override
	public void action(ChannelHandlerContext ctx, HeartByteMessage msg) {
		//	更新channel的上次心跳时间戳
		ctx.channel().attr(AttributeKey.valueOf(AttrbuteKeyNamespace.HEART)).set(System.currentTimeMillis());
		
		//	发送心跳回执
		ctx.channel().writeAndFlush(HeartACKByteMessage.build());
	}

}
